package com.qdlc.p2p.dal.dao;

import java.util.List;

import com.qdlc.p2p.dal.common.dao.BaseDao;
import com.qdlc.p2p.dal.dto.BondCollection;
import com.qdlc.p2p.dal.model.BondCollectionModel;

/**
 * 债权待收DAO接口
 * @author zhangyz
 * @version 1.0
 * @since 2014-12-11
 */
public interface BondCollectionDao extends BaseDao<BondCollection> {

    /**
     * 查询债权待收
     * 
     * @param id 主键ID
     * @return 债权待收实体
     */
    BondCollection getBondCollectionById(long id);
    
	/**
	 * 查询债权待收
	 * @param bondTenderId
	 * @param period
	 * @return
	 */
    BondCollection getCollectionByTenderAndPeriod(long bondTenderId, int period);
    
	/**
	 * 计算投资人剩余待还本金
	 * @param bondTenderId
	 * @return
	 */
	double getRemainderCapital(long bondTenderId); 
	
	/**
	 * 标的还款是否有逾期
	 * @param borrowId
	 * @return
	 */
	boolean isLatedByBorrowId(long borrowId);
	
	/**
	 * 债权待还列表
	 * @param repaymentId
	 * @return
	 */
	List<BondCollection> getBondCollectionList(long repaymentId);
	
	 /**
     * 查询当前用户债权待收本金和利息
     * @param userId
     * @return
     */
    public Object[] getSumBondCollection(long userId);

    /**
     * 为用户赚取债权收益
     * @return
     */
	double sumInterest();
	
	 /**
     * 根据投标id获取债权收款计划，针对债权受让人
     * @param tenderId 债权购买id
     * @return
     */
    public List<BondCollectionModel> getCollectionModelListByBondTenderId(long tenderId);
    
    /**
     * 根据投标id获取债权人应收本息总和，应收本金总和，应收利息总和，针对债权受让人
     * @param tenderId 债权购买id
     * @return
     */
    public Object[] getSumBondCollectionByTenderId(long tenderId);
    
    /**
     * 根据债权标id获取债权收款计划，针对债权转让人
     * @param bondId
     * @return
     */
    public List<BondCollectionModel> getCollectionModelListByBondId(long bondId);
    
    /**
     * 根据债权id获取债权人应收本息总和，应收本金总和，应收利息总和，针对债权转让人
     * @param bondId
     * @return
     */
    public Object[] getSumBondCollectionByBondId(long bondId);

}
